home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue29 / s3demo / S3DEMO.ZIP / Scripts.ZIP / LspScript.txt < prev    next >
Encoding:
Text File  |  1997-11-17  |  25.3 KB  |  503 lines

  1. /*
  2.  * TSyntaxMemoParser Script
  3.  * ------------------------
  4.  *
  5.  * Author  :          David Brock / Tony Tanzillo
  6.  * Date    :          October 1997
  7.  * Language:          LISP
  8.  */
  9.  
  10. //--------------------------------------------------------------------------------------------------------------------
  11. //
  12. //
  13. //
  14. // Macro definitions. Parameters may be specified and the replacement text terminates with the end of
  15. // line (watch trailing blanks).
  16. //
  17. #define ct_DEFAULT                  0
  18. #define ct_COMMENT_LINE             1
  19. #define ct_COMMENT_STAR             2
  20. #define ct_IDENTIFIER               3
  21. #define ct_STRING                   4
  22. #define ct_NUMBER                   5
  23. #define ct_COMMENT                  6
  24. #define ct_OPERATOR                 7
  25. #define ct_RESERVED                 8
  26. #define ct_MISC                     11
  27. #define ct_KEYWORD                  12
  28.  
  29. #define _non_alpha_                 '[^_A-Za-z0-9]'
  30. #define _all_chars_                 '[\x00-\xFF]'
  31. #define _no_chars_                  '[]'
  32. #define _dont_care_                 _all_chars_
  33. #define _DEFAULT_BACKGROUND         clNavy
  34. #define _DEFAULT_FOREGROUND         clWhite
  35.  
  36. // LISP-specific
  37.  
  38. #define _delimiter_                '[ ()\'"\n\x00\x09\x27]'
  39.  
  40.  
  41.  
  42. //--------------------------------------------------------------------------------------------------------------------
  43. //
  44. // %%language section
  45. //
  46. // Header section. Describes the textual name of the language, case sensitivity and options used by the language.
  47. //
  48. %%language
  49. Name                      = 'AutoLISP'
  50. Case                      = __INSENSITIVE
  51. Options                   = __DEFAULT_OPTIONS
  52. WordWrapColumn            = _EDGE
  53. Gutter                    = _DEFAULT_GUTTER
  54. Anchor                    = _DEFAULT_START_ANCHOR
  55. ExampleText               = '(defun GetAttrib (blocks tag val / e i ss fltr rslt)\n\
  56.                             \áá (if (eq tag "") (setq tag "*"))\n\
  57.                             \áá (setq fltr (list \'(0 . "insert") \'(66 . 1)))\n\
  58.                             \áá (cond\n\
  59.                             \ááááá (á (not (setq ss (ssget "x" fltr))) nil)\n\
  60.                             \ááááá (t (setq i (sslength ss)))\n\
  61.                             \áá )\n\
  62.                             \)'
  63.  
  64. EditableStyles              ('Comment',       ct_COMMENT),
  65.                             ('String',        ct_STRING),
  66.                             ('Reserved word', ct_KEYWORD),
  67.                             ('Operator',      ct_MISC),
  68.                             ('Identifier',    ct_IDENTIFIER),
  69.                             ('Number',        ct_NUMBER),
  70.                             ('Default',       ct_DEFAULT)
  71.  
  72. //--------------------------------------------------------------------------------------------------------------------
  73. //
  74. // %%words section
  75. //
  76. // Used to specify simple languge keywords. These are constant value lexemes that always contain the same characters
  77. // and only require the end style to be specified. The words present here will always be tried first. If they fail
  78. // then the entries in the %%tokens section will be allowed to try a match.
  79. //
  80. // %%words table entries have 3 columns:
  81. //     Column 1          Quoted string giving the characters that make up the word
  82. //     Column 2          Quoted string that specifies how the word is terminated
  83. //     Column 3          Token value returned when word is recognised
  84. //
  85. %%words
  86. '\''                        _dont_care_        ct_MISC
  87. '('                         _dont_care_        ct_MISC
  88. ')'                         _dont_care_        ct_MISC
  89. '.'                         _dont_care_        ct_MISC
  90. ';|'                        _dont_care_        ct_COMMENT_STAR
  91. ';'                         _dont_care_        ct_COMMENT_LINE
  92. '-'                         _delimiter_        ct_KEYWORD
  93. '*'                         _delimiter_        ct_KEYWORD
  94. '*error*'                   _delimiter_        ct_KEYWORD
  95. '/'                         _delimiter_        ct_KEYWORD
  96. '/='                        _delimiter_        ct_KEYWORD
  97. '_ver'                      _delimiter_        ct_KEYWORD
  98. '~'                         _delimiter_        ct_KEYWORD
  99. '+'                         _delimiter_        ct_KEYWORD
  100. '<'                         _delimiter_        ct_KEYWORD
  101. '<='                        _delimiter_        ct_KEYWORD
  102. '='                         _delimiter_        ct_KEYWORD
  103. '>'                         _delimiter_        ct_KEYWORD
  104. '>='                        _delimiter_        ct_KEYWORD
  105. '1-'                        _delimiter_        ct_KEYWORD
  106. '1+'                        _delimiter_        ct_KEYWORD
  107. 'abs'                       _delimiter_        ct_KEYWORD
  108. 'acad_colordlg'             _delimiter_        ct_KEYWORD
  109. 'acad_strlsort'             _delimiter_        ct_KEYWORD
  110. 'action_tile'               _delimiter_        ct_KEYWORD
  111. 'add_list'                  _delimiter_        ct_KEYWORD
  112. 'ads'                       _delimiter_        ct_KEYWORD
  113. 'alert'                     _delimiter_        ct_KEYWORD
  114. 'alloc'                     _delimiter_        ct_KEYWORD
  115. 'and'                       _delimiter_        ct_KEYWORD
  116. 'angle'                     _delimiter_        ct_KEYWORD
  117. 'angtof'                    _delimiter_        ct_KEYWORD
  118. 'angtos'                    _delimiter_        ct_KEYWORD
  119. 'append'                    _delimiter_        ct_KEYWORD
  120. 'apply'                     _delimiter_        ct_KEYWORD
  121. 'arx'                       _delimiter_        ct_KEYWORD
  122. 'arxload'                   _delimiter_        ct_KEYWORD
  123. 'arxunload'                 _delimiter_        ct_KEYWORD
  124. 'ascii'                     _delimiter_        ct_KEYWORD
  125. 'assoc'                     _delimiter_        ct_KEYWORD
  126. 'atan'                      _delimiter_        ct_KEYWORD
  127. 'atof'                      _delimiter_        ct_KEYWORD
  128. 'atoi'                      _delimiter_        ct_KEYWORD
  129. 'atom'                      _delimiter_        ct_KEYWORD
  130. 'atoms-family'              _delimiter_        ct_KEYWORD
  131. 'bhatch'                    _delimiter_        ct_KEYWORD
  132. 'bherrs'                    _delimiter_        ct_KEYWORD
  133. 'boole'                     _delimiter_        ct_KEYWORD
  134. 'boundp'                    _delimiter_        ct_KEYWORD
  135. 'bpoly'                     _delimiter_        ct_KEYWORD
  136. 'c:ddim'                    _delimiter_        ct_KEYWORD
  137. 'c:psdrag'                  _delimiter_        ct_KEYWORD
  138. 'c:psfill'                  _delimiter_        ct_KEYWORD
  139. 'c:psin'                    _delimiter_        ct_KEYWORD
  140. 'caaaar'                    _delimiter_        ct_KEYWORD
  141. 'caaadr'                    _delimiter_        ct_KEYWORD
  142. 'caaar'                     _delimiter_        ct_KEYWORD
  143. 'caadar'                    _delimiter_        ct_KEYWORD
  144. 'caaddr'                    _delimiter_        ct_KEYWORD
  145. 'caadr'                     _delimiter_        ct_KEYWORD
  146. 'caar'                      _delimiter_        ct_KEYWORD
  147. 'cadaar'                    _delimiter_        ct_KEYWORD
  148. 'cadadr'                    _delimiter_        ct_KEYWORD
  149. 'cadar'                     _delimiter_        ct_KEYWORD
  150. 'caddar'                    _delimiter_        ct_KEYWORD
  151. 'cadddr'                    _delimiter_        ct_KEYWORD
  152. 'caddr'                     _delimiter_        ct_KEYWORD
  153. 'cadr'                      _delimiter_        ct_KEYWORD
  154. 'car'                       _delimiter_        ct_KEYWORD
  155. 'cdaaar'                    _delimiter_        ct_KEYWORD
  156. 'cdaadr'                    _delimiter_        ct_KEYWORD
  157. 'cdaar'                     _delimiter_        ct_KEYWORD
  158. 'cdadar'                    _delimiter_        ct_KEYWORD
  159. 'cdaddr'                    _delimiter_        ct_KEYWORD
  160. 'cdadr'                     _delimiter_        ct_KEYWORD
  161. 'cdar'                      _delimiter_        ct_KEYWORD
  162. 'cddaar'                    _delimiter_        ct_KEYWORD
  163. 'cddadr'                    _delimiter_        ct_KEYWORD
  164. 'cddar'                     _delimiter_        ct_KEYWORD
  165. 'cdddar'                    _delimiter_        ct_KEYWORD
  166. 'cddddr'                    _delimiter_        ct_KEYWORD
  167. 'cdddr'                     _delimiter_        ct_KEYWORD
  168. 'cddr'                      _delimiter_        ct_KEYWORD
  169. 'cdr'                       _delimiter_        ct_KEYWORD
  170. 'chr'                       _delimiter_        ct_KEYWORD
  171. 'client_data_tile'          _delimiter_        ct_KEYWORD
  172. 'close'                     _delimiter_        ct_KEYWORD
  173. 'command'                   _delimiter_        ct_KEYWORD
  174. 'cond'                      _delimiter_        ct_KEYWORD
  175. 'cons'                      _delimiter_        ct_KEYWORD
  176. 'cos'                       _delimiter_        ct_KEYWORD
  177. 'cvunit'                    _delimiter_        ct_KEYWORD
  178. 'defun'                     _delimiter_        ct_KEYWORD
  179. 'dictadd'                   _delimiter_        ct_KEYWORD
  180. 'dictnext'                  _delimiter_        ct_KEYWORD
  181. 'dictremove'                _delimiter_        ct_KEYWORD
  182. 'dictrename'                _delimiter_        ct_KEYWORD
  183. 'dictsearch'                _delimiter_        ct_KEYWORD
  184. 'dimx_tile'                 _delimiter_        ct_KEYWORD
  185. 'dimy_tile'                 _delimiter_        ct_KEYWORD
  186. 'distance'                  _delimiter_        ct_KEYWORD
  187. 'distof'                    _delimiter_        ct_KEYWORD
  188. 'done_dialog'               _delimiter_        ct_KEYWORD
  189. 'end_image'                 _delimiter_        ct_KEYWORD
  190. 'end_list'                  _delimiter_        ct_KEYWORD
  191. 'entdel'                    _delimiter_        ct_KEYWORD
  192. 'entget'                    _delimiter_        ct_KEYWORD
  193. 'entlast'                   _delimiter_        ct_KEYWORD
  194. 'entmake'                   _delimiter_        ct_KEYWORD
  195. 'entmakex'                  _delimiter_        ct_KEYWORD
  196. 'entmod'                    _delimiter_        ct_KEYWORD
  197. 'entnext'                   _delimiter_        ct_KEYWORD
  198. 'entsel'                    _delimiter_        ct_KEYWORD
  199. 'entupd'                    _delimiter_        ct_KEYWORD
  200. 'eq'                        _delimiter_        ct_KEYWORD
  201. 'equal'                     _delimiter_        ct_KEYWORD
  202. 'eval'                      _delimiter_        ct_KEYWORD
  203. 'exit'                      _delimiter_        ct_KEYWORD
  204. 'exp'                       _delimiter_        ct_KEYWORD
  205. 'expand'                    _delimiter_        ct_KEYWORD
  206. 'expt'                      _delimiter_        ct_KEYWORD
  207. 'fill_image'                _delimiter_        ct_KEYWORD
  208. 'findfile'                  _delimiter_        ct_KEYWORD
  209. 'fix'                       _delimiter_        ct_KEYWORD
  210. 'float'                     _delimiter_        ct_KEYWORD
  211. 'fnsplitl'                  _delimiter_        ct_KEYWORD
  212. 'foreach'                   _delimiter_        ct_KEYWORD
  213. 'gc'                        _delimiter_        ct_KEYWORD
  214. 'gcd'                       _delimiter_        ct_KEYWORD
  215. 'get_attr'                  _delimiter_        ct_KEYWORD
  216. 'get_tile'                  _delimiter_        ct_KEYWORD
  217. 'getangle'                  _delimiter_        ct_KEYWORD
  218. 'getcfg'                    _delimiter_        ct_KEYWORD
  219. 'getcname'                  _delimiter_        ct_KEYWORD
  220. 'getcorner'                 _delimiter_        ct_KEYWORD
  221. 'getdist'                   _delimiter_        ct_KEYWORD
  222. 'getenv'                    _delimiter_        ct_KEYWORD
  223. 'getfiled'                  _delimiter_        ct_KEYWORD
  224. 'getint'                    _delimiter_        ct_KEYWORD
  225. 'getkword'                  _delimiter_        ct_KEYWORD
  226. 'getorient'                 _delimiter_        ct_KEYWORD
  227. 'getpoint'                  _delimiter_        ct_KEYWORD
  228. 'getreal'                   _delimiter_        ct_KEYWORD
  229. 'getstring'                 _delimiter_        ct_KEYWORD
  230. 'getvar'                    _delimiter_        ct_KEYWORD
  231. 'graphscr'                  _delimiter_        ct_KEYWORD
  232. 'grclear'                   _delimiter_        ct_KEYWORD
  233. 'grdraw'                    _delimiter_        ct_KEYWORD
  234. 'grread'                    _delimiter_        ct_KEYWORD
  235. 'grtext'                    _delimiter_        ct_KEYWORD
  236. 'grvecs'                    _delimiter_        ct_KEYWORD
  237. 'handent'                   _delimiter_        ct_KEYWORD
  238. 'help'                      _delimiter_        ct_KEYWORD
  239. 'if'                        _delimiter_        ct_KEYWORD
  240. 'initdia'                   _delimiter_        ct_KEYWORD
  241. 'initget'                   _delimiter_        ct_KEYWORD
  242. 'inters'                    _delimiter_        ct_KEYWORD
  243. 'ismnugrploaded'            _delimiter_        ct_KEYWORD
  244. 'itoa'                      _delimiter_        ct_KEYWORD
  245. 'lambda'                    _delimiter_        ct_KEYWORD
  246. 'last'                      _delimiter_        ct_KEYWORD
  247. 'length'                    _delimiter_        ct_KEYWORD
  248. 'list'                      _delimiter_        ct_KEYWORD
  249. 'listp'                     _delimiter_        ct_KEYWORD
  250. 'load'                      _delimiter_        ct_KEYWORD
  251. 'load_dialog'               _delimiter_        ct_KEYWORD
  252. 'log'                       _delimiter_        ct_KEYWORD
  253. 'logand'                    _delimiter_        ct_KEYWORD
  254. 'logior'                    _delimiter_        ct_KEYWORD
  255. 'lsh'                       _delimiter_        ct_KEYWORD
  256. 'mapcar'                    _delimiter_        ct_KEYWORD
  257. 'max'                       _delimiter_        ct_KEYWORD
  258. 'mem'                       _delimiter_        ct_KEYWORD
  259. 'member'                    _delimiter_        ct_KEYWORD
  260. 'menucmd'                   _delimiter_        ct_KEYWORD
  261. 'menugroup'                 _delimiter_        ct_KEYWORD
  262. 'min'                       _delimiter_        ct_KEYWORD
  263. 'minusp'                    _delimiter_        ct_KEYWORD
  264. 'mode_tile'                 _delimiter_        ct_KEYWORD
  265. 'mtedit'                    _delimiter_        ct_KEYWORD
  266. 'mtprop'                    _delimiter_        ct_KEYWORD
  267. 'namedobjdict'              _delimiter_        ct_KEYWORD
  268. 'nentsel'                   _delimiter_        ct_KEYWORD
  269. 'nentselp'                  _delimiter_        ct_KEYWORD
  270. 'new_dialog'                _delimiter_        ct_KEYWORD
  271. 'nil'                       _delimiter_        ct_KEYWORD
  272. 'not'                       _delimiter_        ct_KEYWORD
  273. 'nth'                       _delimiter_        ct_KEYWORD
  274. 'null'                      _delimiter_        ct_KEYWORD
  275. 'numberp'                   _delimiter_        ct_KEYWORD
  276. 'open'                      _delimiter_        ct_KEYWORD
  277. 'or'                        _delimiter_        ct_KEYWORD
  278. 'osnap'                     _delimiter_        ct_KEYWORD
  279. 'pause'                     _delimiter_        ct_KEYWORD
  280. 'polar'                     _delimiter_        ct_KEYWORD
  281. 'prin1'                     _delimiter_        ct_KEYWORD
  282. 'princ'                     _delimiter_        ct_KEYWORD
  283. 'print'                     _delimiter_        ct_KEYWORD
  284. 'progn'                     _delimiter_        ct_KEYWORD
  285. 'prompt'                    _delimiter_        ct_KEYWORD
  286. 'quit'                      _delimiter_        ct_KEYWORD
  287. 'quote'                     _delimiter_        ct_KEYWORD
  288. 'read'                      _delimiter_        ct_KEYWORD
  289. 'read-char'                 _delimiter_        ct_KEYWORD
  290. 'read-line'                 _delimiter_        ct_KEYWORD
  291. 'redraw'                    _delimiter_        ct_KEYWORD
  292. 'regapp'                    _delimiter_        ct_KEYWORD
  293. 'rem'                       _delimiter_        ct_KEYWORD
  294. 'repeat'                    _delimiter_        ct_KEYWORD
  295. 'report'                    _delimiter_        ct_KEYWORD
  296. 'reverse'                   _delimiter_        ct_KEYWORD
  297. 'rtos'                      _delimiter_        ct_KEYWORD
  298. 'set'                       _delimiter_        ct_KEYWORD
  299. 'set_tile'                  _delimiter_        ct_KEYWORD
  300. 'setcfg'                    _delimiter_        ct_KEYWORD
  301. 'setenv'                    _delimiter_        ct_KEYWORD
  302. 'setfunhelp'                _delimiter_        ct_KEYWORD
  303. 'setq'                      _delimiter_        ct_KEYWORD
  304. 'setvar'                    _delimiter_        ct_KEYWORD
  305. 'setview'                   _delimiter_        ct_KEYWORD
  306. 'sin'                       _delimiter_        ct_KEYWORD
  307. 'slide_image'               _delimiter_        ct_KEYWORD
  308. 'snvalid'                   _delimiter_        ct_KEYWORD
  309. 'sqrt'                      _delimiter_        ct_KEYWORD
  310. 'ssadd'                     _delimiter_        ct_KEYWORD
  311. 'ssdel'                     _delimiter_        ct_KEYWORD
  312. 'ssget'                     _delimiter_        ct_KEYWORD
  313. 'ssgetfirst'                _delimiter_        ct_KEYWORD
  314. 'sslength'                  _delimiter_        ct_KEYWORD
  315. 'ssmemb'                    _delimiter_        ct_KEYWORD
  316. 'ssname'                    _delimiter_        ct_KEYWORD
  317. 'ssnamex'                   _delimiter_        ct_KEYWORD
  318. 'sssetfirst'                _delimiter_        ct_KEYWORD
  319. 'start_dialog'              _delimiter_        ct_KEYWORD
  320. 'start_image'               _delimiter_        ct_KEYWORD
  321. 'start_list'                _delimiter_        ct_KEYWORD
  322. 'startapp'                  _delimiter_        ct_KEYWORD
  323. 'strcase'                   _delimiter_        ct_KEYWORD
  324. 'strcat'                    _delimiter_        ct_KEYWORD
  325. 'strlen'                    _delimiter_        ct_KEYWORD
  326. 'subst'                     _delimiter_        ct_KEYWORD
  327. 'substr'                    _delimiter_        ct_KEYWORD
  328. 't'                         _delimiter_        ct_KEYWORD
  329. 'tablet'                    _delimiter_        ct_KEYWORD
  330. 'tblnext'                   _delimiter_        ct_KEYWORD
  331. 'tblobjname'                _delimiter_        ct_KEYWORD
  332. 'tblsearch'                 _delimiter_        ct_KEYWORD
  333. 'term_dialog'               _delimiter_        ct_KEYWORD
  334. 'terpri'                    _delimiter_        ct_KEYWORD
  335. 'textbox'                   _delimiter_        ct_KEYWORD
  336. 'textpage'                  _delimiter_        ct_KEYWORD
  337. 'textscr'                   _delimiter_        ct_KEYWORD
  338. 'trace'                     _delimiter_        ct_KEYWORD
  339. 'trans'                     _delimiter_        ct_KEYWORD
  340. 'type'                      _delimiter_        ct_KEYWORD
  341. 'unload_dialog'             _delimiter_        ct_KEYWORD
  342. 'untrace'                   _delimiter_        ct_KEYWORD
  343. 'vector_image'              _delimiter_        ct_KEYWORD
  344. 'ver'                       _delimiter_        ct_KEYWORD
  345. 'vmon'                      _delimiter_        ct_KEYWORD
  346. 'vports'                    _delimiter_        ct_KEYWORD
  347. 'wcmatch'                   _delimiter_        ct_KEYWORD
  348. 'while'                     _delimiter_        ct_KEYWORD
  349. 'write-char'                _delimiter_        ct_KEYWORD
  350. 'write-line'                _delimiter_        ct_KEYWORD
  351. 'xdroom'                    _delimiter_        ct_KEYWORD
  352. 'xdsize'                    _delimiter_        ct_KEYWORD
  353. 'xload'                     _delimiter_        ct_KEYWORD
  354. 'xstrcase'                  _delimiter_        ct_KEYWORD
  355. 'xunload'                   _delimiter_        ct_KEYWORD
  356. 'zerop'                     _delimiter_        ct_KEYWORD
  357.  
  358.  
  359. //--------------------------------------------------------------------------------------------------------------------
  360. //
  361. // %%handler section
  362. //
  363. // The %%handler section gives rules to be applied once an entry in the %%words table has been recognised. Normally
  364. // no further processing is required but sometimes a token starts with a fixed set of characters but may be followed
  365. // by a character class rather than a known sequence.
  366. //
  367. // %%handler table entries have 4 columns:
  368. //     Column 1          Token value to be processed
  369. //     Column 2          Character specifier that follows recognised word
  370. //     Column 3          Quoted string specifying end sequence
  371. //     Column 4          Whether end sequence is part of lexeme
  372. //
  373. // The <character specifier> is defined as:
  374. //     Column 2          A single character specifier or pre-defined system character macro:
  375. //                         _PASCAL_CHAR         Pascal style character specifier
  376. //                         _C_CHAR              C style character specifier
  377. //                       If the lexeme can optionally have these characters then append '?' to the end
  378. //                       of the quoted string.
  379. //     Column 3          Up to 2 characters may be given as a sequence to terminate the lexeme.
  380. //                       Characters are specified using a simplified regular expression. If this
  381. //                       string is empty then the lexeme will never be matched.
  382. //
  383. %%handler
  384. ct_COMMENT_LINE         '[^\n]'?                    '\n'           _discard_
  385. ct_COMMENT_STAR         _all_chars_?                '|;'           _use_
  386.  
  387. //--------------------------------------------------------------------------------------------------------------------
  388. //
  389. // %%tokens section
  390. //
  391. // Used to specify how to recognise non-fixed lexemes. Non-fixed lexemes are only tried if the table entries in the
  392. // %%words section have failed. The non-fixed lexeme is defiened by 5 columns as below:
  393. //     Column 1          Token value
  394. //     Column 2          Single start character specifier
  395. //     Column 3          Single contains character specifier
  396. //     Column 4          End sequence specifier
  397. //     Column 5          Whether end sequence is part of lexeme
  398. // Pre-defined token styles are implemented. If used they should be specified in Column 2. The implemented ones
  399. // are:
  400. //  __STD_PASCALSTRING   Pascal string -- starts with ' ands with ' and uses '' to represent
  401. //                       ' within a string. Does not extend beywond end of line.
  402. //  __STD_IDENTIFIER     Standard identifier. Starts with [_a-zA-Z], contains [_a-zA-Z0-9] and ends with
  403. //                       a non-alpha numeric character that is not part of the lexeme
  404. //  __STD_NUMBER_OR_FP   Integer or floating point constant of syntax:
  405. //                           <Digit String> [ '.' <Digit string> ] [ e|E [+-] <Digit string> ]
  406. //
  407. %%tokens
  408. ct_STRING               __STD_C_STRING
  409. ct_IDENTIFIER           __STD_IDENTIFIER
  410. ct_NUMBER               __STD_C_NUMBER_OR_FP_SIGNED
  411.  
  412. //--------------------------------------------------------------------------------------------------------------------
  413. //
  414. // %%effects section
  415. //
  416. // Used to specify the default colors and font styles used for each token
  417. //
  418. //     Column 1          Token value
  419. //     Column 2          Font styles
  420. //     Column 3          Foreground color
  421. //     Column 4          Background color
  422. //     Column 5          Optional column specifying whether map entry is a 'hotspot'
  423. //
  424. // Columns 1-4 must be completed for all rows, Column 5 defaults to non-hotspot.
  425. //
  426. %%effects
  427. ct_DEFAULT              [fsBold]        clWhite                   _DEFAULT_BACKGROUND
  428. ct_IDENTIFIER           [fsBold]        clYellow                  _DEFAULT_BACKGROUND
  429. ct_STRING               [fsbold]        clAqua                    _DEFAULT_BACKGROUND
  430. ct_COMMENT              [fsItalic]      clSilver                  _DEFAULT_BACKGROUND
  431. ct_KEYWORD              [fsBold]        clWhite                   _DEFAULT_BACKGROUND
  432. ct_NUMBER               [fsBold]        clLime                    _DEFAULT_BACKGROUND
  433. ct_MISC                 [fsBold]        clWhite                   _DEFAULT_BACKGROUND
  434.  
  435.  
  436. //--------------------------------------------------------------------------------------------------------------------
  437. //
  438. // %%map section
  439. //
  440. // Used to specify which entry in the %%effects table each token value uses. By default all token values map onto
  441. // __DEFAULT_TOKEN which is defined as zero. Table has 2 columns:
  442. //     Column 1          Recognised token value
  443. //     Column 2          Map table entry (i.e. %%effects table entry)
  444. // Normally the %%map table consists of identical value entries.
  445. %%map
  446. ct_IDENTIFIER           ct_IDENTIFIER
  447. ct_STRING               ct_STRING
  448. ct_NUMBER               ct_NUMBER
  449. ct_COMMENT              ct_COMMENT
  450. ct_COMMENT_LINE         ct_COMMENT
  451. ct_COMMENT_STAR         ct_COMMENT
  452. ct_KEYWORD              ct_KEYWORD
  453. ct_MISC                 ct_MISC
  454. ct_OPERATOR             ct_MISC
  455.  
  456. /*
  457. ;; Problems:
  458. ;; A one-line comment begins with a single semi colon, not
  459. ;; two semi-colons:
  460.  
  461. ; This line should be commented out
  462.  
  463. ;; Leading +/- on numbers is not same color as number
  464. ;; (this seems to be related to the next item). There
  465. ;; are four numbers on the next line.
  466.  
  467. +25 -17 32.5 -4.25
  468.  
  469. ;; The following line contains four identifiers:
  470.  
  471. áááá /5á \4á >32á *25
  472.  
  473. ;; LISP Symbols (identifiers) that are prefixed with a one-
  474. ;; character reserved word (like +, -, >, etc) are being
  475. ;; displayed improperly. The reserved word prefix is actually
  476. ;; part of the identifer, not a seperate element, and hence, 
  477. ;; it should have the same color:
  478.  
  479. ááá +foo ;; the symbol '+FOO'
  480. ááá >Sáá ;; the symbol '>S'
  481. ááá >==< ;; The symbol '>==<'
  482. ááá 
  483. ;; The exclaimation point is not a symbol or reserved word:
  484. áááá 
  485. ááá !hello
  486. ááá 
  487. ;; Ditto for the first character of each of these:
  488.  
  489. ááá %fileá &LAYER [PREV] ]NEXT
  490.  
  491. ;; The following line contains the symbol 'read-record',
  492. ;; but 'read-' is being treated incorrectly ('read' is a
  493. ;; reserved word, and so is '-', it seems that one-character
  494. ;; reserved words are being treated as if they themselves
  495. ;; are also delimiters - but they are not):
  496.  
  497. ááá read-record
  498.  
  499. ;; This is for starters, more comments to come.
  500.  
  501. */
  502.  
  503.